Поделиться через


System.Collections.ObjectModel.KeyedCollection<TKey,TItem>. метод ChangeItemKey

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Метод ChangeItemKey(TItem, TKey) не изменяет внедренный в item ключ; он просто заменяет ключ, сохраненный в словаре сопоставления. Таким образом, если newKey, ключ отличается от встраиваемого в item ключа, то вы не можете получить доступ к item с помощью ключа, возвращённого GetKeyForItem.

Этот метод ничего не делает, если у KeyedCollection<TKey,TItem> нет словаря подстановки.

Каждый ключ в объекте KeyedCollection<TKey,TItem> должен быть уникальным. Ключ не может быть null.

Этот метод является операцией O(1).

Заметки для разработчиков

Перед изменением ключа, встроенного в элемент, необходимо вызвать этот метод, чтобы обновить ключ в словаре поиска. Если порог создания словаря равен -1, вызов этого метода не требуется.

Не делайте метод ChangeItemKey публичным методом производного класса. Неправильное использование этого метода выводит словарь подстановки из синхронизации с ключами элементов. Например, сначала установка ключа на null, а затем на другое значение добавляет несколько ключей для элемента в словарь поиска. Экспонируйте этот метод внутренне, чтобы разрешить изменяемые ключи элементов: когда ключ элемента изменяется, этот метод используется для изменения ключа в словаре поиска.